package com.ssyt.common.utils;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;

import com.ssyt.common.vo.User;

/**
 * <pre>
 * 邮件发送工具实现类
 * 
 * 需要注意的地方：
 * 1、认证密码不是登录密码，而是授权密码
 * 2、如果使用QQ服务器发送邮件，会遇到此问题：https://www.oschina.net/question/2282830_247657?fromerr=yWlMbzzV
 * </pre>
 * 
 * @author Hsu。
 * @since Oct 13, 2016
 */
public class MailUtil {

    private static final String CHARSET = "UTF-8";
    private static final int SMTP_PORT =465;//994
    private static final boolean SSL_ON_CONNECT = true;
    private static final String HOST_NAME = "smtp.163.com";
    private static final String USERNAME = "f4qiankehua@163.com";
    private static final String AUTHENTICATION_PASSWORD = "qiankehua1989";
//   private static final String HOST_NAME = "smtp.qq.com";
//    用户名
//   private static final String USERNAME = "1301394248@qq.com";
//    QQ邮箱授权密码
//    private static final String AUTHENTICATION_PASSWORD = "oajvtnggzcxzgfcf";

    /**
     * 发送邮件
     * 
     * @param destEmail 对方邮箱
     * @param subject 邮件标题 , String subject
     * @param msg 邮件内容 , String msg
     * @return
     */
    public static boolean send(String destEmail,User user) {
        // 发送email
        HtmlEmail email = new HtmlEmail();
        try {
            // 设置邮件服务器，不同邮件服务器不一样，比如qq邮箱是smtp.qq.com,163邮箱是smtp.163.com
            email.setHostName(HOST_NAME);
            // 设置邮件发送端口
            email.setSmtpPort(SMTP_PORT);
            // 设置使用SSL加密连接
            email.setSSLOnConnect(SSL_ON_CONNECT);
            // 字符编码集的设置
            email.setCharset(CHARSET);
            // 发送人的邮箱
            email.setFrom(USERNAME,USERNAME);
            // 如果需要认证信息的话，设置认证：用户名-授权密码。
            email.setAuthentication(USERNAME, AUTHENTICATION_PASSWORD);
            // 收件人的邮箱
//            message.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
            email.addTo(destEmail);
            // 要发送的邮件主题
            email.setSubject("点击链接激活账户");
            // 要发送的信息，由于使用了HtmlEmail，可以在邮件内容中使用HTML标签
            email.setMsg(MailText.mailText(user));
            // 发送
           
            email.send();
            return true;
        } catch (EmailException e) {
            e.printStackTrace();
            System.out.println(USERNAME + "发送给" + destEmail + "邮件失败!");
            return false;
        }
    }

    public static void main(String[] args) {
//        System.out.println(send("956230033@qq.com"));
    	
    }
}
